/*
  将下面异步代码使用 Promise 的方法改进
  尽量用看上去像同步代码的方式
  setTimeout(function () {
    var a = 'hello'
    setTimeout(function () {
      var b = 'lagou'
      setTimeout(function () {
        var c = 'I ♥ U'
        console.log(a + b +c)
      }, 10)
    }, 10)
  }, 10)
*/



// 为了进一步观察运行效果，将间隔时间由10变成1000
// 为了展示效果，用' '间隔

function getA() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve('hello')
    }, 1000);
  });
}
function getB() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve('lagou')
    }, 1000);
  });
}
function getC() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve('I ♥ U')
    }, 1000);
  });
}

// 链式反应调用的方式

// let results = [];
// getA().then(res => {
//   console.log('res :>> ', res);
//   results.push(res)
//   return getB()
// }).then(res => {
//   console.log('res :>> ', res);
//   results.push(res)
//   return getC()
// }).then(res => {
//   console.log('res :>> ', res);
//   results.push(res)
//   console.log('results-str :>> ', results.join(' '));
// })




// async/await的方式
async function lagou() {
  const a = await getA();
  const b = await getB();
  const c = await getC();
  console.log(a + ' ' + b + ' ' + c);
}
lagou()




/* 
  个人开发过过程中习惯使用async/await的方式，
*/